package db;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;

import kino.Filiale;
import kino.Film;
import kino.Vorstellung;

import com.modeliosoft.modelio.javadesigner.annotations.objid;

public class FilmDAO {
	public static void store(final Film film) {
        java.sql.Connection conn = db.MySQLConnection.getConn();
        if(conn != null)
        {
            // SQL-Statement erzeugen.
            Statement query;
            try {
                query = conn.createStatement();
                // Ergebnistabelle erzeugen und abholen.
                String sql = "INSERT INTO `kinodb`.`film` (`name`,`dauer`)"
                +"VALUES ("+
                "'"+ film.getName()+"',"+
                "'"+ film.getDauer()+"')";
                query.execute(sql);
                sql = "select idfilm from `kinodb`.`film`";
                ResultSet result = query.executeQuery(sql);
                // PrimaryKey im entsprechenden Objekt ablegen
                while (result.next()) {         
                    film.setId(Integer.parseInt(result.getString("idfilm")));
                }
                /*
                if (film.getVorstellungen().size()!=0){
                	Iterator<Vorstellung> itr1 = film.getVorstellungen().iterator();
                	while (itr1.hasNext()){
                		Vorstellung vorstellung = itr1.next();
                		sql = "select count(*) from film_has_vorstellung where film_idfilm="+film.getId()+
                				"and vorstellung_idVorstellung="+vorstellung.getId()+")";
                		result = query.executeQuery(sql);
                		
                		
                		sql = "INSERT INTO `kinodb`.`film_has_vorstellung` (`film_idfilm`,`vorstellung_idVorstellung`)"
                                +"VALUES ("+
                                "'"+ film.getId()+"',"+
                                "'"+ itr1.next().getId()+"')";
                	}
                	
                }
                */
            } catch (SQLException e) { e.printStackTrace(); }
        }
    }

    public static Film load(final int id) {
        java.sql.Connection conn = db.MySQLConnection.getConn();
        Film neuesFilmObjekt = null;
        if(conn != null)
        {
            // SQL-Statement erzeugen.
            Statement query;
            try 
            {
                query = conn.createStatement();
                // Ergebnistabelle erzeugen und abholen.
                String sql = "select * from `kinodb`.`film` where idfilm = " + id + "";
                query.execute(sql);
                ResultSet result = query.executeQuery(sql);
                // Ergebniss?tze durchfahren.
                result.next(); 
                neuesFilmObjekt = new Film(result.getString("name"), result.getString("dauer"));
                neuesFilmObjekt.setId(Integer.parseInt(result.getString("idfilm")));
                
            } catch (SQLException e) { e.printStackTrace(); }
        }
        return neuesFilmObjekt;
    }
    
    public static ArrayList<Film> loadAll() {
        java.sql.Connection conn = db.MySQLConnection.getConn();
        ArrayList<Film> neuesFilmListenObjekt = new ArrayList<Film>();
        if(conn != null)
        {
            // SQL-Statement erzeugen.
            Statement query;
            try 
            {
                query = conn.createStatement();
                // Ergebnistabelle erzeugen und abholen.
                String sql = "select idfilm from `kinodb`.`film`";
                query.execute(sql);
                ResultSet result = query.executeQuery(sql);
                // Ergebniss?tze durchfahren.
                while(result.next()){
                	neuesFilmListenObjekt.add(FilmDAO.load(result.getInt(1)));
                }
            } catch (SQLException e) { e.printStackTrace(); }
        }
        return neuesFilmListenObjekt;
    }
    
}
